#include "queue.hpp"

using namespace systemos;

/** 
* @brief      构造函数
* @param[in]   uiLen消息队列长度
* @param[in]   uiItemSize数据大小
* @retval    	 None
*/
Queue::Queue(uint32_t uiLen, uint32_t uiItemSize)
{
	mQueueHandle = xQueueCreate(uiLen, uiItemSize);
}

/** 
* @brief      析构函数
* @retval     None
*/
Queue::~Queue(void)
{
	
}

/** 
* @brief       发送
* @param[in]   Item 数据
* @param[in]   uiWait等待时间
* @retval    	  操作结果
*/
bool Queue::Send(void *Item, uint32_t uiWait)
{
	if(mQueueHandle)
	{
		if(xQueueSend(mQueueHandle, Item, uiWait) == pdPASS)
		{
			return(true);
		}
	}
	return(false);
}

/** 
* @brief       无等待时间发送
* @param[in]   Item 数据
* @retval    	  操作结果
*/
bool Queue::Send(void *Item)
{
	if(mQueueHandle)
	{
		if(xQueueSend(mQueueHandle, Item, 0) == pdPASS)
		{
			return(true);
		}
	}
	return(false);
}

/** 
* @brief       	接收
* @param[out]   Item数据
* @param[in]   	uiWait等待时间
* @retval    	  	操作结果
*/
bool Queue::Recevie(void *Item, uint32_t uiWait)
{
	if(mQueueHandle)
	{
		return(xQueueReceive(mQueueHandle, Item, uiWait));
	}
	return(false);
}

/** 
* @brief       	无等待时间接收
* @param[out]   Item数据
* @retval    	  操作结果
*/
bool Queue::Recevie(void *Item)
{
	if(mQueueHandle)
	{
		return(xQueueReceive(mQueueHandle, Item, 0));
	}
	return(false);
}
